/*Die Klasse Haufigkeit berechnet die Haeufigkeit von ausgeliehenen
 * Buechern im Vergleich zum andere ausgeliehene Buechern von einen
 * bestimmten Sachgebiet
 * 
 * Datei : Haufigkeit.java             Autor : Kouende Steeve
 * Datum : 07.11.2011
 */

package statistik;                     /* diese package beinhaltet
                                        * alle notwendige klasse,
                                        * die zur Ausfuehrung diese 
                                        * Klasse benoetigt werden 
                                        */

import java.util.*;                    /* diese klasse ist notwendig 
                                        *  um List zu benutzen 
                                        */

/*
 * die oeffentlichen Daten von der Klasse Haufigkeit sind :
 * List < Integer > haufigkeit : (beinhaltet wie viel mal jedes Buch
 *                              ausgeliehen ist)
 *  List <Float> haeufigkeitB: (beinhaltet wie viel mal jedes Buch 
 *  ausgeliehen ist im Vergleich zu anderen Buechern des gleiches 
 *  Sachgebiet)
 * int i,j,counter 
 * mediumSG newMediumSG: (beinhaltet eine Liste von alle Buecher,
 *  die im Bibliothek (nach Sachgebiete) vorhanden und ausleihbar 
 *  sind) 
 * ausMediumSG newAusMediumSG : (beinhaltet eine Liste von allen 
 * ausgeliehenen Buechern von der Bibliothek (nach Sachgebiete))
 * 
 *  die privaten Daten von der Klasse Haufigkeit sind :
 * 
 * String s; int m; float result, h, a;
 * int count
 * 
 * die Methoden von der Klasse Haufigkeit sind :
 * 
 * public void ausgeliehenB ()
 * public void hauefigkeitBuch ()
 * public void anzeigen ()
 */
 
public class Haufigkeit
{
  /* hier wird die Haeufigkeit (im prozent) von jedes Buch im 
   * Vergleich zu anderen Buechern berechnet und ausgeliefert
   */
  public static void main (String[] args)
  {
    Haufigkeit livre = new Haufigkeit (1);                                           
    livre.ausgelieheneB ();
    livre.hauefigkeitBuch ();
    livre.anzeigen ();
  }
  
  public List <Integer> haufigkeit = new ArrayList ();
  public List <Float> haeufigkeitB = new ArrayList ();
  int counter, i, j;
  mediumSG newMediumSG;
  ausMediumSG newAusMediumSG;

  public Haufigkeit (int sachgebiet)
  {
    newMediumSG = new mediumSG (sachgebiet);
    newAusMediumSG = new ausMediumSG (sachgebiet);
  }

  /* diese Methode zaehlt wie oft ein Buch ausgeliehen ist
   * Sie ist parameterlos und hat keinen Rueckgabewert
   */
  public void ausgelieheneB ()
  {
    
    for (i = 0; i < newMediumSG.gibMedium ().size (); i++)
    {
      String s = (String) newMediumSG.gibMedium ().get (i);
      int m = 0;
      for (j = 0; j < newAusMediumSG.gibAusgelieheneMedium ().size 
          (); j++)
      {
        /* prueft ob ein medium ist in der ausgeliehenen List
         oder nicht
        */
        if (s.equals 
            (newAusMediumSG.gibAusgelieheneMedium ().get (j)))                                                                                                                                             
        {
          /* Wenn Ja zaehlt es wie viele mal das Medium 
           * ausgeliehen ist
           */
          m++;             
        }
      }
      haufigkeit.add (m);      
    }
  }

  /* Die funktion liefert, wie oft ein Buch im Vergleich zu anderen
   * Buechern ausgeliehen ist
   */  
 public void hauefigkeitBuch ()
  {
    float result, h, a;
    int count;

    for (count = 0; count <
        newMediumSG.gibMedium ().size (); count++)
    {
      // wie oft ein Buch ist ausgeliehen
      h = (float) haufigkeit.get (count); 
      // die Zahl von gesamte ausgeliehenen Buecher                                    
      a = (float) 
          newAusMediumSG.gibAusgelieheneMedium ().size (); 
      // Die Haeufigkeit pro Buch von ausgeliehen Buecher
      result = (float) ( (h / a) * 100); 
      // List von Haeufigkeit der ausgeliehenen Buecher                                       
      haeufigkeitB.add (result);                                      
    }
  }

 // die funktion gibt uns im prozent wie oft ein Buch ausgeliehen ist
  public void anzeigen ()
  {
    int count ;
    for (count = 0; count
        < newMediumSG.gibMedium ().size (); count++)
    {    
      System.out.printf (" buch %s prozent hat %.2f \n",  
      newMediumSG.gibMedium ().get (count),haeufigkeitB.get (count));
    }        
  }
}
